#pragma once
#include <boost/noncopyable.hpp>
#include "WeaponFwd.hpp"

namespace Ogre
{
	class Entity;
} /*Ogre*/

namespace he
{
	class TerrainTile;

	//! Base class for all units.
	class Unit : boost::noncopyable
	{
		// Typedefs
	private:
		typedef std::vector<WeaponPtr_t> WeaponContainer_t;

		// Attributes
	private:
		//! Name/Description.
		std::string const m_Name;
		//! All weapons unit has.
		WeaponContainer_t m_Weapons;

		// Operations
	public:
		//! Add weapons.
		void add_weapon(WeaponPtr_t const &pWeapon);
				
		// Construction/Destruction
	public:
		Unit(std::string const &Name);
		virtual ~Unit() = 0;
	};

	inline Unit::~Unit()
	{
	}
} /*he*/
